package com.xbongbong.saas.enums.business;

import com.xbongbong.i18n.util.I18nMessageUtil;
import com.xbongbong.paas.enums.StageTypeEnum;
import com.xbongbong.saas.enums.XbbRefTypeEnum;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * Created with IntelliJ IDEA
 *
 * @Auther: 宋港迎
 * @Date: 2020/12/04/11:36
 * @Destription:
 */
@Getter
public enum ChartConfigEnum {
    /**
     * 客户阶段漏斗设置页的流失按钮
     * 阶段推进器需求变动 2021年12月20日19:58:05 - 改为使用阶段类型维护（原设计是用code维护，但为了一次设置多个模板同时生效，改为类型，则就没必要再改她原有alias）
     *      为了不写脚本，继续使用原有的alias维护（虽然不应该，但是改为type要写脚本刷已有数据，影响较大，暂不大改动）
     */
    FUNNEL_CUSTOMER_RUN_OFF_BUTTON("funnelCustomerRunOffButton", "funnel_customer_run_off_button", StageTypeEnum.FAIL_STAGE.getName(),"1",StageTypeEnum.FAIL_STAGE.getType()),

    /**
     * 销售漏斗设置页的输单以及取消按钮
     * 阶段推进器-改为使用阶段类型维护，而非原写死的alias
     */
    FUNNEL_OPPORTUNITY_LOST_ORDER_BUTTON("funnelOpportunityLostOrderButton", "funnel_opportunity_lost_order_button", StageTypeEnum.FAIL_STAGE.getName(), "1", StageTypeEnum.FAIL_STAGE.getType()),
    FUNNEL_OPPORTUNITY_CANCEL_BUTTON("funnelOpportunityCancelButton", "funnel_opportunity_cancel_button", StageTypeEnum.CANCEL_STAGE.getName(), "1", StageTypeEnum.CANCEL_STAGE.getType()),
    ;


    /**
     * 配置别名
     */
    private final String config;
    /**
     * 数据库字段
     */
    private final String dbAlias;
    /**
     * 配置名称
     * @see StageTypeEnum
     */
    private final String name;
    /**
     * 配置值
     */
    private final String configValue;
    /**
     * 阶段的类型
     * @see StageTypeEnum
     */
    private Integer stageType;

    ChartConfigEnum(String config, String dbAlias, String name, String configValue, Integer stageType) {
        this.config = config;
        this.name = name;
        this.dbAlias = dbAlias;
        this.configValue = configValue;
        this.stageType = stageType;
    }
    public static ChartConfigEnum getByConfig(String config) {
        ChartConfigEnum configEnum = null;
        for (ChartConfigEnum chartConfigEnum : ChartConfigEnum.values()) {
            if (Objects.equals(config, chartConfigEnum.getConfig())) {
                configEnum = chartConfigEnum;
            }
        }
        return configEnum;
    }

    public String getName() {
        return I18nMessageUtil.getMessage(name);
    }
}
